【iOSDC Japan 2024 レポート】DAY 1「開発を加速する共有Swift Package実践」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭りiOSDC Japan 2024に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
開発を加速する共有Swift Package実践
登壇者
- el_metalさん
概要
サイボウズではkintone、 サイボウズ Office、 Garoonの3アプリを主に開発しています。
これらのアプリは開発開始時期によって利用技術がまちまちで、認証機能など共通の機能であってもそれぞれで再実装していました。そこで、サイボウズ Officeアプリの開発時に蓄積した経験に基づいて、共通部分をSwift Concurrencyやswift-async-algorithmsを活用した共有のSwift Packageにすることにしました。
抽象度を高めることで複数プロダクトに適用できる、機能の境界が明確な複数のPackageができました。
コードが8000行削減されたり、RxSwift/UIKitからSwiftUIへの置き換えを加速したり、それぞれのプロダクトでの課題解決が進んでいます。
この取り組みの中でWKWebViewをSwiftUIでラップするOSSも生まれました。このトークでは、以下のトピックでサイボウズでの取り組みを紹介します。
- 技術選定プロセス
- 実装で大事にしたポイント
- 共有Swift Packageの導入効果
- 作成したPackageの運用
このトークが複数アプリでの共通化、単一アプリでのマルチパッケージ境界設計、共有コードの運用の助けとなれば幸いです。
引用: fortee
資料
見つけ次第、添付します。
感想
サイボウズでは、異なる時期に開発された3つのアプリ(kintone、サイボウズ Office、Garoon)で、認証機能などの共通部分がそれぞれ再実装されていたことが問題となっていました。これにより技術スタックの不一致や実装の散逸、負債の拡散といった課題が生じ、開発メンバーの理解を阻害する要因となっていたとのことでした。
これを解決するため、共通部分を共有のSwift Packageとしてまとめることで、ソースコードのSingle Source of Truth化で問題があればこの一つを修正すればよい状態になった。これにより、バグもスケールしてしまう状態になってしまったが、バグを見つけた別チームが修正することができるのでバグ修正の速度も共通化により早くなったのはとても素晴らしいですね。
こちらは社内OSSとして運用されていて、事例のSwift Packageについては公開できないですが、公開中のものを紹介してくれました。
ドキュメントも普段見慣れている形式にすることで利用者の理解の負担を減らしている対策も印象的でした。また、ドキュメント作成することがまだ見ぬ利用者と対話することになり、実装が洗練されるお話はとても勉強になりました。
共通化により、8000行のコードが削減されていたので開発者としてはとても気持ちいい成果だったように思えます。
自分自身で開発する場合も何度も書いているようなコードは、Swift Packageに切り出して共通化して修正も利用も簡単に出来るようにしていきたいなと思えたトークでした。
おわりに
Inner Source Practiceという言葉に初めて出会い、こういった社内では公開できるコードの社内OSS化の考え方、とても良いですね。